//
//  BLStore.h
//  ITC_iOS
//
//  Created by Benz.L on 03/09/2018.
//  Copyright © 2018 Benz.L. All rights reserved.
//

#import <Foundation/Foundation.h>
                   
@interface BLStore : NSObject

+ (instancetype)manager;

/**
 @brief 返回一个唯一的key
 @return 唯一的key
 */
+ (NSString *)uniqueKey:(NSString * _Nonnull)key;

/**
 @brief manager内部管理着一个NSUserDefaults,可以subclass然后存储自己的数据。@note 注意，subclass的key不要覆盖super的key，除非你了解了super现有的key，否则建议你调用uniqueKey:方法生成一个唯一的key再使用！！
 @param object  需要存储的对象
 @param key     关联的key
 */
- (void)saveObject:(id)object forKey:(NSString * _Nonnull)key;
- (void)removeObjectForKey:(NSString * _Nonnull)key;
- (id)objectForKey:(NSString * _Nonnull)key;

@end


typedef NSString *(^UniqueKeyBlock)(NSString *key);
@interface BLStore(Chain)
+ (UniqueKeyBlock)uniqueKey;
@end
